首先一個範例 : 『想批量刪除之前測試建立的幾百個資源群組,並保留主群組避免。』
這時候可以使用 Azure CLI + JMESPath 達到目的,JMESPath 是一個強大的 JSON 動態查詢語言
,特別適合以 JSON 資料結構為主
的 Azure CLI
一. 先使用創建1個主 group + 200 個測試 group
$newGroup = az group create --name 'demo2' --location "eastasia" --tags item_id=0 | ConvertFrom-Json | select-Object name;
Write-Host("創建主資源群組 $newGroup");
foreach($i in 1..200){
$guid = [System.guid]::NewGuid().toString("N");
$newGroup = az group create --name $guid --location "eastasia" --tags item_id=$i | ConvertFrom-Json | select-Object name ;
Write-Host("$i.創建測試群組 group $newGroup");
}
二. az query 得到 JSON 資料,並利用[]
抓取陣列資料,串接 | length(@)
驗證建立群組數量 :
az group list --query "[] | length(@)"
三. [].name
抓出所有群組名稱,並用jq .[] -r
串接轉成字串陣列 :
az group list --query "[].name" | jq .[] -r
四. 使用 [?name != '名稱']
篩掉主資源群組 :
az group list --query "[?name != 'demo'].name | length(@)"
az group list --query "[?name != 'demo'].name" --output json | jq .[] -r
五. 交給 powershell foreach 執行 azure cli 的刪除指令
$gs= ( az group list --query "[?name != 'demo'].name" --output json | jq .[] -r )
foreach( $g in $gs){
az group delete -n $g --no-wait -y;
}
回到 Azure Portal 驗證可以看到除了主群組,其他測試全被刪除
假如同樣情況用 Azure Portal GUI 會特別沒有效率,一個一個點大概要點幾個小時
抓取第一筆資源群組資料 :
az group list --query "[0]"
抓取N1-N2的資料 :
az group list --query "[1:5].name"
想線上測試 JMESPath 可以到 jsonpath online evaluator ,它很簡單,相信大家可以很快上手,變成 Azure 管理的一個小利器。